layui.config({
    base: '/modules/'
}).use(['table', 'form', 'layer', 'util', 'global', 'admin'], function () {
    var table = layui.table
    var layer = layui.layer
    var config = layui.global
    var assit = layui.admin
    var $ = layui.$
    var util = layui.util
    var form = layui.form

    //第一个实例
    table.render({
        id: 'MODEL_TABLE',
        elem: '#model_table',
        autoSort: false, // 关闭前端自动排序
        url: '/jsdata/model/page', //数据接口
        text: {
            none: '什么数据也木有 ヾ§ ￣▽)ゞ',
        },
        page: true, //开启分页
        limits: [5, 10, 20, 30, 50],
        limit: 5,
        cols: [[ //表头
            { type: 'checkbox', width: 50, fixed: 'left' },
            { type: 'numbers', title: '序号', width: 60 },
            { field: 'modelName', title: '实体类名', sort: true, minWidth: 210 },
            { field: 'tableName', title: '表名', width: 220 },
            { field: 'sortNo', title: '排序', sort: true, width: 90 },
            {
                title: '修改时间', width: 180, templet: function (d) {
                    return util.toDateString(d.modifyTime)
                }
            },
            { field: 'remark', title: '描述', minWidth: 220 },
            { title: '操作', fixed: 'right', width: 170, toolbar: '#modelTableOptColumn', align: 'center' },
        ]]
    });

    // 输入框点缀事件 - 搜索示例
    form.on('input-affix(search)', function(data){
        var elem = data.elem; // 输入框
        var value = elem.value; // 输入框的值
        if(!value){
            layer.msg('请输入搜索内容');
            return elem.focus()
        };
        // 模拟搜索跳转
        location.href = '?keywords='+ value + '&_'+ new Date().getTime() +'#affix-custom';
    });

    $('#addModelBtn').click(function () {
        showModelLayer({}, 'add')
    })

    $('#generateCodeBtn').click(function () {
        var checkStatus = table.checkStatus('MODEL_TABLE')
        var data = checkStatus.data
        if (data.length < 1) {
            layer.msg('请先选择实体类', {anim: 6})
        } else {
            var arr = data.map(o => {
                return {id: o.id, name: o.modelName}
            })
            config.putCache('pro-form-data', arr)
            assit.popupCenter({
                title: '填写项目信息',
                path: '/pages/project_form.html',
                offset: '20px',
                area: '900px',
                scrollbar: false,
                finish: function () {
                    config.removeCache('pro-form-data')
                    reloadTable()
                },
                end: function() {
                    // 更新表格的选择状态
                    // let el = $('#model_table').next('.layui-table-view')
                    // el.find('table>tbody>tr')
                    //     .find('td').eq(0)
                    //     .find('input[type=checkbox]')
                    //     .next('.layui-form-checkbox').click()
                    // form.render('checkbox')
                }
            })
        }
        return false
    })

    $('#searchBtn').on('click', (e) => gotoSearch())

    $('#searchContent').keypress(function (event) {
        if (event.keyCode === 13) {
            gotoSearch()
        }
    })

    $('#refreshBtn').on('click', (e) => reloadTable({ page: { curr: 1 }, where: {filter: ''} }))

    //操作列事件
    table.on('tool(model-table)', function (obj) {
        const data = obj.data;
        const event = obj.event;

        switch (event) {
            case 'del':
                layer.confirm('真的删除该行么？', { icon: 0, title: '提示', anim: 6 }, function (index) {
                    layer.close(index);
                    //向服务端发送删除指令
                    assit.delete('/model', { modelId: data.id })
                        .then(r => {
                            if (r.code === 0) {
                                layer.msg('已成功删除', { icon: 1, time: 2000 })
                                // obj.del() //删除对应行（tr）的DOM结构，并更新缓存
                                reloadTable()
                            }
                        })
                })
                break;
            case 'edit':
                showModelLayer(data, event)
                break;
            case 'config':
                if (data.id && data.id.trim() !== '') {
                    gotoDetail(data.id.trim())
                }
                break;
            default:
                console.log('undefined event name!')
        }
    })

    // 触发表格排序
    table.on('sort(model-table)', function(obj) {
        console.log(obj.field); //当前排序的字段名
        console.log(obj.type); //当前排序类型：desc（降序）、asc（升序）、null（空对象，默认排序）
        reloadTable({
            initSort: obj,
            where: {
                orderField: config.toLine(obj.field),
                orderType: obj.type
            }
        })
    })

    function reloadTable(param = {}) {
        table.reload('MODEL_TABLE', param)
    }
    function gotoSearch() {
        var s = $('#searchContent').val()
        reloadTable({ page: { curr: 1 }, where: { filter: s.trim() } })
    }
    function showModelLayer(data, event) {
        var title = event == 'add' ? '新增实体类' : event == 'edit' ? '更新实体类' : ''
        data.layEvent = event
        config.putCache('m-form-data', data)
        assit.popupCenter({
            title,
            area: event == 'add' ? '650px' : '450px',
            path: '/pages/model_form.html',
        })
    }
});

function gotoDetail(id) {
    window.open('/model/detail/' + id, '_self');
}